var fmz={name:"fmz",index:1}

/**
 * 
 * @param {*} _name 
 */
function ffm(_name=""){
    return ""
}

//结构
/** 作为结构导入，不应使用 */
const  _DataStruct = {
    get Trade () {
        return {
            Time: 1567736576000,    // 时间(Unix timestamp 毫秒)
            Price: 1000,             // 价格          
            Amount: 1,                // 数量
            Type: 0                 // 订单类型,参考常量里的订单类型,0即为ORDER_TYPE_BUY，ORDER_TYPE_BUY的值为0
        }
    },

    get Ticker () {
        return {
            Info: { },             // 请求交易所接口后，交易所接口应答的原始数据，回测时无此属性
            High: 1000,              // 最高价
            Low: 500,               // 最低价
            Sell: 900,               // 卖一价
            Buy: 899,               // 买一价
            Last: 900,               // 最后成交价
            Volume: 10000000,          // 最近成交量
            Time: 1567736576000      // 毫秒级别时间戳
        }
    },
    get Record () {
        return {
            Time: 1567736576000,     // 一个时间戳,精确到毫秒，与Javascript的new Date().getTime()得到的结果格式一样
            Open: 1000,              // 开盘价
            High: 1500,              // 最高价
            Low: 900,               // 最低价
            Close: 1200,              // 收盘价
            Volume: 1000000            // 交易量
        }

    },
    get Order () {
        return {
            Info: { },         // 请求交易所接口后，交易所接口应答的原始数据，回测时无此属性
            Id: 123456,        // 交易单唯一标识
            Price: 1000,          // 下单价格
            Amount: 10,            // 下单数量
            DealAmount: 10,            // 成交数量
            AvgPrice: 1000,          // 成交均价，注意，有些交易所不提供该数据，不提供的设置为0
            Status: 1,             // 订单状态,参考常量里的订单状态ORDER_STATE_CLOSED
            Type: 0,             // 订单类型,参考常量里的订单类型ORDER_TYPE_BUY
            Offset: 0,             // 数字货币期货和商品期货的订单数据中，订单的开平仓方向，ORDER_OFFSET_OPEN为开仓，ORDER_OFFSET_CLOSE为平仓方向
            ContractType: ""            // 现货订单该属性为""，期货订单该属性为具体的合约代码
        }

    },
    get MarketOrder () {
        return {
            Price: 1000,              // 价格
            Amount: 1                  // 数量
        }

    },
    get Depth () {
        return {
            Asks: [_DataStruct.MarketOrder],             // 卖单数组,MarketOrder数组,按价格从低向高排序
            Bids: [_DataStruct.MarketOrder],             // 买单数组,MarketOrder数组,按价格从高向低排序
            Time: 1567736576000      // 毫秒级别时间戳
        }

    },
    get Account () {
        return {
            Info: { },     // 请求交易所接口后，交易所接口应答的原始数据，回测时无此属性
            Balance: 1000,      // 余额(人民币或者美元,在Poloniex交易所里ETC_BTC这样的品种,Balance就指的是BTC的数量,Stocks指的是ETC数量)
            FrozenBalance: 0,         // 冻结的余额
            Stocks: 1,         // BTC/LTC数量,数字货币现货为当前可操作币的余额(去掉冻结的币),数字货币期货的话为合约当前可用保证金(传统期货无此属性)
            FrozenStocks: 0          // 冻结的BTC/LTC数量(传统期货无此属性)
        }

    },
    get Position () {
        return {
            Info: { },     // 请求交易所接口后，交易所接口应答的原始数据，回测时无此属性
            MarginLevel: 10,        // 杆杠大小
            Amount: 100,       // 持仓量，OKEX合约交易所，表示合约的份数(整数且大于1，即合约张数)
            FrozenAmount: 0,         // 仓位冻结量
            Price: 10000,     // 持仓均价
            Profit: 0,         // 持仓浮动盈亏(数据货币单位：BTC/LTC,传统期货单位:RMB,股票不支持此字段,注:OKEX合约全仓情况下指实现盈余,并非持仓盈亏,逐仓下指持仓盈亏)
            Type: 0,         // PD_LONG为多头仓位(CTP中用closebuy_today平仓),PD_SHORT为空头仓位(CTP用closesell_today)平仓,(CTP期货中)PD_LONG_YD为咋日多头仓位(用closebuy平),PD_SHORT_YD为咋日空头仓位(用closesell平)
            ContractType: "quarter", // 商品期货为合约代码,股票为'交易所代码_股票代码',具体参数SetContractType的传入类型
            Margin: 1          // 仓位占用的保证金
        }

    }

}



// 全局函数
 function Version(){return {}}
 /**
  * 
  * @param {Number} Millisecond 
  */
 function Sleep(Millisecond){}
 function IsVirtual(){return {}}
 function Mail(...arg){return {}}
 function SetErrorFilter(...arg){return {}}
 function GetPid(){return {}}
 function GetLastError(){return {}}
 function GetCommand(){return ""}
 function Dial(...arg){return {}}
 function HttpQuery(...arg){return {}}
 function Hash(...arg){return {}}
 function HMAC(...arg){return {}}
 function UnixNano(){return {}}
 function Unix(){return {}}
 function GetOS(){return {}}
 function MD5(String){return {}}
 // 内置函数
 function  _G(K, V){return {}}
function  _D(Timestamp, Fmt){return {}}
function  _N(Num, Precision){return {}}
function  _C(...arg){return {}}
function  _Cross(Arr1, Arr2){return {}}
//日志信息
 function Log(...arg){return {}}
 function LogProfit(Profit){return {}}
 function LogProfitReset(){return {}}
 function LogStatus(Msg){return {}}
 function EnableLog(){return {}}
 function Chart(...arg){return {}}
 function LogReset(){return {}}
 function LogVacuum(){return {}}
 /** 行情API */
 const exchange={}
 /** 获取市场当前行情 
  * 商品期货策略实盘时，如果没有行情推送过来时，exchange.GetTicker()函数会阻塞，等待行情推送。
exchange.GetDepth()、exchange.GetTrades()、exchange.GetRecords()同理。如果不希望阻塞，可以使用切换行情模式
  */
 exchange.GetTicker=()=>{return _DataStruct.Ticker}
 exchange.GetDepth=()=>{return _DataStruct.Depth}
 exchange.GetTrades=()=>{return _DataStruct.Trade}
// 周期常量
const PERIOD_M1=60 //指1分钟,
const PERIOD_M5=60*5 //指5分钟,
const PERIOD_M15=60*15 //指15分钟,
const PERIOD_M30=60*30 //指30分钟,
const PERIOD_H1=60*60 //指1小时,
const PERIOD_D1=60*60*24 //指一天

 /** 周期参数秒，
  * 可不传或传一个，PERIOD_M1指1分钟,PERIOD_M5指5分钟,PERIOD_M15指15分钟,PERIOD_M30指30分钟,PERIOD_H1指1小时,PERIOD_D1 日
  * 商品期货策略实盘时，如果没有行情推送过来时，exchange.GetTicker()函数会阻塞，等待行情推送。
exchange.GetDepth()、exchange.GetTrades()、exchange.GetRecords()同理。如果不希望阻塞，可以使用切换行情模式：
 * @param {...Number} period
 */
 exchange.GetRecords=(...period)=>{return [_DataStruct.Record]}
 exchange.GetPeriod=()=>{return {}}
 exchange.SetMaxBarLen=(Len)=>{return {}}
 exchange.GetRawJSON=()=>{return {}}
 exchange.GetRate=()=>{return {}}
 exchange.GetUSDCNY=()=>{return {}}
 exchange.SetData=(Key,Value)=>{return {}}
 exchange.GetData=(Source)=>{return {}}
 //交易API
 /** 返回一个订单ID
  * @param {Number} Price 表示市价单：-1
  * @param {Number} Amount 
  * @returns {String|Number}
  */
exchange.Buy=(Price, Amount)=>{return ""}
/**
 * 
 * @param {Number} Price 
 * @param {Number} Amount 
 */
exchange.Sell=(Price, Amount)=>{return {}}
exchange.CancelOrder=(Id)=>{return {}}
exchange.GetOrder=(Id)=>{return _DataStruct.Order}
exchange.GetOrders=()=>{return [_DataStruct.Order]}
exchange.SetPrecision=(...arg)=>{return {}}
exchange.SetRate=(Rate)=>{return {}}
exchange.IO=(...arg)=>{return {}}
exchange.Log=(...arg)=>{return {}}
exchange.HMAC=(...arg)=>{return {}}
exchange.Go=(...arg)=>{return {}}
// 账户信息
exchange.GetAccount=()=>{return _DataStruct.Account}
exchange.GetName=()=>{return {}}
exchange.GetLabel=()=>{return {}}
exchange.GetCurrency=()=>{return {}}
exchange.SetCurrency=(...arg)=>{return {}}
exchange.GetQuoteCurrency=()=>{return {}}
// 期货交易
exchange.GetPosition=()=>{return _DataStruct.Position}
/** 设置杆杠大小 
 * @param {Number} MarginLevel
*/
exchange.SetMarginLevel=(MarginLevel)=>{}
/**设置Buy或者Sell下单类型
 * 
 * @param {String} Direction 可以取buy-买入开多仓，closebuy-卖出平多仓，sell-卖出开空仓，closesell-买入平空仓，四个参数
 */
exchange.SetDirection=(Direction)=>{}
exchange.SetContractType=(...arg)=>{return {}}
exchange.GetContractType=()=>{return {}}
exchange.IO=(api,m,m2)=>{return {}}
/** 商品期货CTP协议中的汉字是GBK编码可用此函数解码。 */
function StrDecode(){return {}}
// 网络设置
exchange.SetBase=(Base)=>{return {}}
exchange.SetProxy=(...arg)=>{}
/**
 * @param {Number} Millisecond
 */
exchange.SetTimeout=(Millisecond)=>{return {}}
//数据调用
/**  数据调用
 * 基差	BASIS	 
企业景气及企业家信心指数	BCEEI	 
交易结算资金(银证转账)	BTSF	 
存款准备金率	CKZBJ	 
居民消费价格指数	CPI
外商直接投资数据	FDI	 
外汇和黄金储备	FEGR	 
国内生产总值	GDP	 
全国股票交易统计表	GPJYTJ	 
股票账户统计详细数据	GPZHSJ
货币供应量	HBGYL	 
海关进出口增减情况一览表	HGJCK	 
消费者信心指数	ICS	 
贷款市场报价利率	LRP	 
新房价指数	NREPI
旧房价指数	OREPI	 
采购经理人指数	PMI	 
工业品出厂价格指数	PPI	 
全国税收收入	QGSSSR	 
企业商品价格指数	QYSPJG
社会消费品零售总额	TRSCG	 
城镇固定资产投资	UIFA	 
期货标准仓单	WHR	 
本外币存款	WBCK	 
外汇贷款数据	WHXD
银行利率调整	YHLL	 
交易所会员成交量及持仓明细	DTP	 
交易所会员持仓盈亏	FCPP	 
财政收入	CZSR	 
工业增加值增长	GYZJZ
汽柴油价格	OILPRICE	 
现货价格	SPOTPRICE	 
新增信贷数据	XZXD 
 * @param {*} Source
 */
exchange.GetData=(Source)=>{return {}}